其實這個篇章放在這裡有點小晚了,一直覺得好像單獨放成一篇有點哪裡不對,本來想說因為不是必要的一個語法,但對於寫程式來說又有一定的重要性。
所以想了想還是要介紹一下,不過就當成番外篇來放吧!
要說到什麼重要什麼不重要,我們來提一下程式設計中重要的原則有什麼:
e.g. 比如說我們今天要寫一個程式,先輸入一個數字,然後我們要列印出所有小於它的質數,並重複兩次。
(1) 如果是這樣子放兩次程式碼是很冗長的。
#include <stdio.h>
int is_prime(int);
int main()
{
    int input_num = 0;
    //第一次輸入
    scanf("%d", &input_num);
    //判斷輸入的整數是否大於1,否則重新輸入
    while(input_num<2){
        scanf("%d", &input_num);
    }
    //開始處理
    for(int i=2; i<=input_num; i++){
        //回傳1就是質數,要列印出來
        if(is_prime(i)==1){
            printf("%d ", i);
        }
    }
    
    printf("\n==========\n");
    //第二次輸入
    scanf("%d", &input_num);
    //判斷輸入的整數是否大於1,否則重新輸入
    while(input_num<2){
        scanf("%d", &input_num);
    }
    //開始處理
    for(int i=2; i<=input_num; i++){
        //回傳1就是質數,要列印出來
        if(is_prime(i)==1){
            printf("%d ", i);
        }
    }
    
    return 0;
}
int is_prime(int num){
    //判斷狀態
    int k=0;
    for(int i=2; i<num; i++){
        //可被整除的話,則不是質數
        if(num%i==0){
            k=1;
            break;
        }
    }
    //k=0時,是質數
    if(k==0){
        return 1;
    }
    //k=1時,不是質數
    else{
        return 0;
    }
}

(2) 但我們可以透過迴圈來替代重複次數,減少多餘的重複程式碼
#include <stdio.h>
int is_prime(int);
int main()
{
    int input_num = 0;
    for(int t=0; t<2; t++){
        scanf("%d", &input_num);
        //判斷輸入的整數是否大於1,否則重新輸入
        while(input_num<2){
            scanf("%d", &input_num);
        }
        //開始處理
        for(int i=2; i<=input_num; i++){
            //回傳1就是質數,要列印出來
            if(is_prime(i)==1){
                printf("%d ", i);
            }
        }
        printf("\n==========\n");
    }
    return 0;
}
int is_prime(int num){
    //判斷狀態
    int k=0;
    for(int i=2; i<num; i++){
        //可被整除的話,則不是質數
        if(num%i==0){
            k=1;
            break;
        }
    }
    //k=0時,是質數
    if(k==0){
        return 1;
    }
    //k=1時,不是質數
    else{
        return 0;
    }
}

#include <stdio.h>
int is_prime(int);
int main()
{
    int input_num = 0;
    
    scanf("%d", &input_num);
    //判斷輸入的整數是否大於1,否則重新輸入
    while(input_num<2){
        scanf("%d", &input_num);
    }
    //依序使用迴圈跑小於或等於輸入整數之數,並判斷是否質數、要不要列印
    for(int i=2; i<=input_num; i++){
        //回傳1就是質數,要列印出來
        if(is_prime(i)==1){
            printf("%d ", i);
        }
    }
    return 0;
}
int is_prime(int num){
    //判斷狀態
    int k=0;
    for(int i=2; i<num; i++){
        //可被整除的話,則不是質數
        if(num%i==0){
            k=1;
            break;
        }
    }
    //k=0時,是質數回傳1
    if(k==0){
        return 1;
    }
    //k=1時,不是質數回傳0
    else{
        return 0;
    }
}
像是以下就是判斷質數的函式
int is_prime(int num){
    //判斷狀態
    int k=0;
    for(int i=2; i<num; i++){
        //可被整除的話,則不是質數
        if(num%i==0){
            k=1;
            break;
        }
    }
    //k=0時,是質數回傳1
    if(k==0){
        return 1;
    }
    //k=1時,不是質數回傳0
    else{
        return 0;
    }
}
正確性
相信正確性是一個非常基礎的事情吧,如果連基本需求都有錯誤、做不到,這個程式可以說不需要存在了,甚至有時候一點誤差就會產生嚴重的後果,所以我們在寫程式時必須時時測試,並即時更正找到的bug。
執行效率
在進行程式設計時,我們需要注意程式的效率,可以注意演算法中提到的時間複雜度,越是能簡化次數,程式執行的效率越佳。
int is_prime(int num){
    //判斷狀態
    int k=0;
    for(int i=2; i<=sqrt(num); i++){
        //可被整除的話,則不是質數
        if(num%i==0){
            k=1;
            break;
        }
    }
    //k=0時,是質數回傳1
    if(k==0){
        return 1;
    }
    //k=1時,不是質數回傳0
    else{
        return 0;
    }
}
| 語法 | 說明 | 
|---|---|
| //單行註解 | 在註解的最左側加入「//」,就可以讓程式忽略它,不產生語法錯誤。 | 
| /多行註解/ | 使用包住「/* */」註解,就可以寫多行的註解了。 | 
#include <stdio.h>
int main()
{
    int input_num = 0;
    
    /* 第一部分
    輸入處理 */
    
    scanf("%d", &input_num);
    //判斷輸入的整數是否大於1,否則重新輸入
    while(input_num<2){
        scanf("%d", &input_num);
    }
    /* 第二部分
    列印星星的部分 */
    
    //行數
    for(int i=1; i<=input_num; i++){
        //單行星星數
        for(int j=0; j<i; j++){
            printf("*", i);
        }
        printf("\n");
    }
    return 0;
}
